package chapter05

/**
  * create by undeRdoG on  2021-05-30  21:54
  * 凡心所向，素履以往，生如逆旅，一苇以航。
  */
object Test11_ControlAbstraction {

  def main(args: Array[String]): Unit = {

    /**
      * 控制抽象：
      * 传值参数
      * 传名参数
      **/
    // 传值参数
    def f0(a: Int): Unit = {
      println(s"a: ${a}")
    }

    f0(23)


    def f1(): Int = {
      println("f1 调用")
      12
    }
    // 先调用 f1 获得 12 这个值，再将12 传递给 f0
    f0(f1())

    println("================================================================================")

    // 传名参数   传进来的不再是一个具体的值，而是一块可执行的代码
    def f2(a: => Int): Unit = {
      println(s"a : ${a}")
      println(s"a : ${a}")
    }

    f2(23)
    f2(f1())
    f2({
      println("这是一块代码块")
      29
    })
  }
}
